FastAPI তে PostgreSQL, MySQL, বা SQLite এর মতো ডাটাবেস ব্যবহার করা খুবই সহজ এবং কার্যকর। FastAPI SQLAlchemy এবং Tortoise ORM এর মতো লাইব্রেরির সাথে ইন্টিগ্রেশন সমর্থন করে, যা ডাটাবেসের সাথে সহজে কাজ করার সুযোগ দেয়। এখানে আমরা দেখব কিভাবে FastAPI-র সঙ্গে বিভিন্ন ধরনের ডাটাবেস (PostgreSQL, MySQL, SQLite) ব্যবহার করা যায়।
১. PostgreSQL ব্যবহার FastAPI-তে
Step 1: PostgreSQL সেটআপ
প্রথমে PostgreSQL ডাটাবেস ইনস্টল এবং কনফিগার করুন, এবং ডাটাবেস তৈরি করুন।
sudo apt-get install postgresql postgresql-contrib
ডাটাবেস তৈরি করুন:
sudo -u postgres psql
CREATE DATABASE fastapi_db;
CREATE USER fastapi_user WITH PASSWORD 'yourpassword';
ALTER ROLE fastapi_user SET client_encoding TO 'utf8';
ALTER ROLE fastapi_user SET default_transaction_isolation TO 'read committed';
ALTER ROLE fastapi_user SET timezone TO 'UTC';
GRANT ALL PRIVILEGES ON DATABASE fastapi_db TO fastapi_user;
Step 2: SQLAlchemy এবং Psycopg2 ইনস্টলেশন
pip install sqlalchemy psycopg2
sqlalchemy: ডাটাবেস ORM হিসেবে ব্যবহৃত হয়।psycopg2: PostgreSQL এর সাথে সংযোগ স্থাপনের জন্য প্রয়োজনীয় ড্রাইভার।
Step 3: FastAPI অ্যাপ কনফিগারেশন
from fastapi import FastAPI
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
app = FastAPI()
# PostgreSQL ডাটাবেস URL
SQLALCHEMY_DATABASE_URL = "postgresql://fastapi_user:yourpassword@localhost/fastapi_db"
# SQLAlchemy engine এবং session সেটআপ
engine = create_engine(SQLALCHEMY_DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()
# মডেল তৈরি
class Item(Base):
__tablename__ = "items"
id = Column(Integer, primary_key=True, index=True)
name = Column(String, index=True)
price = Column(Integer)
# ডাটাবেস তৈরি
Base.metadata.create_all(bind=engine)
@app.post("/items/")
def create_item(name: str, price: int):
db = SessionLocal()
db_item = Item(name=name, price=price)
db.add(db_item)
db.commit()
db.refresh(db_item)
db.close()
return db_item
এখানে:
SQLALCHEMY_DATABASE_URL: PostgreSQL ডাটাবেসের URL।SessionLocal: ডাটাবেস সেশন তৈরি করতে ব্যবহৃত।Base: SQLAlchemy মডেলকে বেস ক্লাস হিসাবে ডিফাইন করা হয়েছে।
রিকোয়েস্ট উদাহরণ:
POST /items/
{
"name": "Laptop",
"price": 1500
}
রেসপন্স:
{
"id": 1,
"name": "Laptop",
"price": 1500
}
২. MySQL ব্যবহার FastAPI-তে
Step 1: MySQL সেটআপ
প্রথমে MySQL ইনস্টল এবং কনফিগার করুন, এবং ডাটাবেস তৈরি করুন।
sudo apt-get install mysql-server
sudo mysql_secure_installation
ডাটাবেস তৈরি করুন:
mysql -u root -p
CREATE DATABASE fastapi_db;
CREATE USER 'fastapi_user'@'localhost' IDENTIFIED BY 'yourpassword';
GRANT ALL PRIVILEGES ON fastapi_db.* TO 'fastapi_user'@'localhost';
FLUSH PRIVILEGES;
Step 2: SQLAlchemy এবং MySQL-connector ইনস্টলেশন
pip install sqlalchemy mysql-connector-python
mysql-connector-python: MySQL ডাটাবেসের সাথে সংযোগ স্থাপনের জন্য ব্যবহৃত ড্রাইভার।
Step 3: FastAPI অ্যাপ কনফিগারেশন
from fastapi import FastAPI
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
app = FastAPI()
# MySQL ডাটাবেস URL
SQLALCHEMY_DATABASE_URL = "mysql+mysqlconnector://fastapi_user:yourpassword@localhost/fastapi_db"
# SQLAlchemy engine এবং session সেটআপ
engine = create_engine(SQLALCHEMY_DATABASE_URL)
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()
# মডেল তৈরি
class Item(Base):
__tablename__ = "items"
id = Column(Integer, primary_key=True, index=True)
name = Column(String, index=True)
price = Column(Integer)
# ডাটাবেস তৈরি
Base.metadata.create_all(bind=engine)
@app.post("/items/")
def create_item(name: str, price: int):
db = SessionLocal()
db_item = Item(name=name, price=price)
db.add(db_item)
db.commit()
db.refresh(db_item)
db.close()
return db_item
এখানে, mysql+mysqlconnector MySQL ডাটাবেসের সাথে সংযোগ স্থাপনের জন্য ব্যবহৃত হচ্ছে।
রিকোয়েস্ট উদাহরণ:
POST /items/
{
"name": "Smartphone",
"price": 800
}
রেসপন্স:
{
"id": 1,
"name": "Smartphone",
"price": 800
}
৩. SQLite ব্যবহার FastAPI-তে
Step 1: SQLite সেটআপ
SQLite ইনস্টল করার জন্য কোনো আলাদা সেটআপের প্রয়োজন নেই, কারণ এটি একটি ফাইল-ভিত্তিক ডাটাবেস, যা Python-এর সঙ্গে একযোগে আসে।
Step 2: SQLAlchemy এবং SQLite ব্যবহার
from fastapi import FastAPI
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
app = FastAPI()
# SQLite ডাটাবেস URL
SQLALCHEMY_DATABASE_URL = "sqlite:///./test.db" # `./test.db` ফাইল ব্যবহার করা হবে
# SQLAlchemy engine এবং session সেটআপ
engine = create_engine(SQLALCHEMY_DATABASE_URL, connect_args={"check_same_thread": False})
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)
Base = declarative_base()
# মডেল তৈরি
class Item(Base):
__tablename__ = "items"
id = Column(Integer, primary_key=True, index=True)
name = Column(String, index=True)
price = Column(Integer)
# ডাটাবেস তৈরি
Base.metadata.create_all(bind=engine)
@app.post("/items/")
def create_item(name: str, price: int):
db = SessionLocal()
db_item = Item(name=name, price=price)
db.add(db_item)
db.commit()
db.refresh(db_item)
db.close()
return db_item
এখানে, sqlite:///./test.db ব্যবহার করে একটি SQLite ডাটাবেস তৈরি করা হয়েছে। এটি ফাইল-ভিত্তিক ডাটাবেস, তাই কোনো সার্ভার সেটআপের প্রয়োজন নেই।
রিকোয়েস্ট উদাহরণ:
POST /items/
{
"name": "Tablet",
"price": 600
}
রেসপন্স:
{
"id": 1,
"name": "Tablet",
"price": 600
}
FastAPI তে PostgreSQL, MySQL, এবং SQLite ডাটাবেস ব্যবহারের মাধ্যমে আপনি স্কেলেবল এবং শক্তিশালী API তৈরি করতে পারেন। SQLAlchemy ব্যবহার করে ডাটাবেস মডেল, সংযোগ এবং সেশন পরিচালনা করা সহজ হয়। FastAPI এর সাথে এই ডাটাবেস ইন্টিগ্রেশন অ্যাসিঙ্ক্রোনাস অপারেশন এবং দ্রুত পারফরম্যান্স নিশ্চিত করতে সাহায্য করে।
Read more